package br.com.pesca.controller;

import br.com.pesca.dao.FormularioDAO;
import br.com.pesca.entity.Formulario;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

public class FormularioController implements Serializable {

    private static final long serialVersionUID = 1L;

    FormularioDAO formularioDAO = new FormularioDAO();

    /**
     * Salva um novo formulário no banco de dados.
     *
     * @param formulario
     */
    public void criaFormulario(Formulario formulario) {
        formularioDAO.startOperation();
        formularioDAO.save(formulario);
        formularioDAO.stopOperation(true);
    }

    /**
     * Atualiza/edita um formulário previamente cadastrado no banco de dados.
     *
     * @param formulario
     */
    public void atualizarFormulario(Formulario formulario) {
        formularioDAO.startOperation();
        formularioDAO.update(formulario);
        formularioDAO.stopOperation(true);
    }

    /**
     * Faz a comunicação com o método que busca o valor do último código
     * cadastrado no banco de dados de um formulário, para depois este ser
     * incrementado.
     *
     * @return
     */
    public Long getUltimoCodigo() {
        formularioDAO.startOperation();
        Long ultimoCodigo = formularioDAO.consultaUltimoCodigo();
        formularioDAO.stopOperation(false);
        return ultimoCodigo;
    }

    /**
     * Faz a comunicação com o método que realiza a busca de um formulário pelo
     * seu código.
     *
     * @param codigo
     * @return
     */
    public List<Formulario> buscaCodigo(String codigo) {
        formularioDAO.startOperation();
        List<Formulario> resultado = formularioDAO
                .consultaCodigo(codigo);
        formularioDAO.stopOperation(false);
        return resultado;
    }

    /**
     * Faz a comunicação com o método que realiza a busca formulários pelas suas
     * datas de registro.
     *
     * @param data
     * @return
     */
    public List<Formulario> buscaData(Date data) {
        formularioDAO.startOperation();
        List<Formulario> resultado = formularioDAO.consultaData(data);
        formularioDAO.stopOperation(false);
        return resultado;
    }

    /**
     * Faz a comunicação com o método que realiza a busca formulários pelas suas
     * datas de registro.
     *
     * @param mes
     * @param ano
     * @return
     */
    public List<Formulario> buscaData(int mes, int ano) {
        formularioDAO.startOperation();
        List<Formulario> resultado = formularioDAO.consultaData(mes, ano);
        formularioDAO.stopOperation(false);
        return resultado;
    }

}
